package student.aistar.controller;


import org.springframework.web.bind.annotation.*;
import student.aistar.model.bo.Result;
import student.aistar.model.entity.User;

@RestController
@RequestMapping("/rest")
public class RestFulController {

    /**
     * get - 查询
     * @return
     */
    @GetMapping
    @ResponseBody
    public Result findAll(){
        return new Result("200","查询所有!","");
    }

    /**
     * post - 创建
     * @return
     */
    @PostMapping
    @ResponseBody
    public Result save(User user){
        return new Result("200","增加!",user);
    }


    /**
     * 直接使用占位符来参数的占位,数据传参的时候不需要? & 来拼接我们的参数了
     * url - 对应资源 [服务]
     * @param id
     * @return
     */
    @GetMapping("/{id}/{name}")
    @ResponseBody
    public Result findById(@PathVariable("id") Integer id,@PathVariable("name")String name){
        return new Result("200","根据id进行查询!",id+":"+name);
    }

    /**
     * put - 对应的是更新操作
     * @param user
     * @return
     */
    @PutMapping
    @ResponseBody
    public Result update(User user){
        return new Result("200","更新全局!",user);
    }

    /**
     * delete  - 删除
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    @ResponseBody
    public Result delete(@PathVariable("id")Integer id){
        return new Result("200","根据id进行删除!",id);
    }


    /**
     * 数据的形式
     * 1. key-value
     * 2. json对象
     *          => 散列的数据
     *          => 对象pojo
     *
     * 3. post发送json字符串到后端
     *         => 后端必须使用@RequstBody将json字符串中的数据绑定到pojo
     *
     *
     * 将前端传过来的json字符串
     *
     *  xx必须是宾语 - 名词 - 服务/资源
     *
     * @param user
     * @return
     */
    @PostMapping("/xx")
    @ResponseBody
    public Result get(@RequestBody User user){
        return new Result("200","json字符串",user);
    }
}
